Users of computers desire computer systems that require minimal manual interaction to perform systems management functions. Moreover, in this age of electronic communication, a large number of computers are connected to a network which allows them to practice numerous services over the network.
Many of these networked services are implemented using the client-server model. Using the client-server architecture, a client computer located on the network performs a remote procedure call (RPC) to a RPC endpoint of a server process running on a server computer to request information or initiate the performance of some activity. To be able to make such a call, the client must know a priori the correct endpoint of the server process.
In many configurations, the server process uses a predetermined "static" endpoint which either requires manual intervention on the part of the computer user to specify for the client, or is set by the developer of the client and server software. As the number of endpoints are limited for a computer, different programs can conflict with each other, and then require manual intervention to reconfigure the endpoints for the software to function properly. The static definition of the server ports also presents configuration problems when a server process is modified or moved to another computer as each of the clients might need to be manually reconfigured.
Attempting to overcome some of these deficiencies, "dynamic endpoints" are provided. The endpoint number of these dynamic endpoints are assigned at runtime by certain RPC runtime environments. A client process can then discover the address of the endpoint via the endpoint mapper (part of the RPC subsystem) and possibly in conjunction with a RPC Name Service. However, the RPC Name Service is a complex set of separate processes running on one or more computers that allows clients to determine a server location by specifying a logical name for that service and requires substantial initial configuration and maintenance.
The use of dynamic endpoints where the RPC endpoint is assigned at runtime overcomes some of the configuration and conflict problems associated with the use of static endpoints. However, certain RPC runtime systems only provide a mechanism for a single dynamic endpoint per server process which is very limiting to the design and efficiency of server processes.
In an environment that provides a RPC service that supports only a single RPC dynamic endpoint for a given process, statically defined endpoints are used to provide multiple endpoints to a single process, where the plurality of port numbers are previously known to the remote process. As previously described, current approaches do not provide a mechanism for the dynamic assignment of a plurality of RPC endpoints to a single server process at runtime, and for efficiently informing the client process of these endpoints.